from elasticsearch_dsl import Document, Text, Integer, connections


def init_es_index(index_name="insurance_manual_es_01"):
    """
    初始化Elasticsearch索引（存储文本片段用于关键词检索）

    参数:
        index_name: 索引名称
    """
    # 连接ES服务
    connections.create_connection(hosts=["http://localhost:9200"])

    # 定义文档结构（类似数据库表结构）
    class InsuranceDocument(Document):
        page_num = Integer()  # 页码
        text = Text(analyzer="ik_max_word")  # 文本内容，使用IK分词器（需提前安装）

        class Index:
            name = index_name  # 索引名称

    # 删除已有索引（测试用，生产环境谨慎）
    if InsuranceDocument._index.exists():
        InsuranceDocument._index.delete()

    # 创建新索引
    InsuranceDocument._index.create()
    print(f"ES索引 '{index_name}' 创建成功")
    return InsuranceDocument


# 测试代码
if __name__ == "__main__":
    # 初始化ES索引
    init_es_index()
